package com.geovis.emergency.spd.biz.zwdd.config.schedule;

import lombok.Setter;

import java.util.concurrent.atomic.AtomicLong;

/**
 * 定时处理器接口
 *
 * @author linrf
 * @version V1.0
 * @date 2020/4/28 16:02
 */
public abstract class AbsScheduleHandler {

    @Setter
    private static ScheduleConfig scheduleConfig;

    /**
     * 定时任务执行数目
     */
    private final AtomicLong isRunning = new AtomicLong(0);

    /**
     * 启动
     *
     * @return 正在数量
     */
    public long start() {
        return isRunning.incrementAndGet();
    }

    /**
     * 停止
     *
     * @return 正在数量
     */
    public long stop() {
        return isRunning.decrementAndGet();
    }

    /**
     * 定时任务是否已经停止
     * 默认：true
     */
    public boolean isShutdown() {
        return isRunning.get() <= 0;
    }

    /**
     * 是否需要停止执行--执行器是否要关闭
     */
    public boolean needShutdown() {
        return null == scheduleConfig || !scheduleConfig.isRunning();
    }

}
